// 定义类型
interface UniShowModalResult {
  confirm: boolean;
  cancel: boolean;
}

/**
 * 显示消息提示框
 * @param content 提示的标题
 */
export function toast(content: string): void {
  uni.showToast({
    icon: 'none',
    title: content,
  });
}

/**
 * 显示模态弹窗
 * @param content 提示的标题
 * @returns Promise<UniShowModalResult>
 */
export function showConfirm(content: string): Promise<UniShowModalResult> {
  return new Promise((resolve, reject) => {
    uni.showModal({
      title: '提示',
      content: content,
      cancelText: '取消',
      confirmText: '确定',
      success: (res: UniShowModalResult) => {
        resolve(res);
      },
      fail: (err) => {
        reject(err);
      },
    });
  });
}

/**
 * 参数处理
 * @param params 参数对象
 * @returns 处理后的 URL 参数字符串
 */
export function transParams(params: Record<string, any>): string {
  let result = '';
  for (const propName of Object.keys(params)) {
    const value = params[propName];
    const part = encodeURIComponent(propName) + '=';
    if (value !== null && value !== '' && typeof value !== 'undefined') {
      if (typeof value === 'object') {
        for (const key of Object.keys(value)) {
          if (value[key] !== null && value[key] !== '' && typeof value[key] !== 'undefined') {
            const paramsKey = `${propName}[${key}]`;
            const subPart = encodeURIComponent(paramsKey) + '=';
            result += subPart + encodeURIComponent(value[key]) + '&';
          }
        }
      } else {
        result += part + encodeURIComponent(value) + '&';
      }
    }
  }
  return result;
}
